package com.cloudjan.leetcod.常见算法技巧;

import java.util.Arrays;

/**
 * 冒泡排序算法
 * （1）比较前后相邻的二个数据，如果前面数据大于后面的数据，就将这二个数据交换。
 * （2）这样对数组的第 0 个数据到 N-1 个数据进行一次遍历后，最大的一个数据就“沉”到数组第
 * N-1 个位置。
 * （3）N=N-1，如果 N 不为 0 就重复前面二步，否则排序完成。
 */
public class 冒泡排序 {

    /**
     * 时间复杂度O(n2)
     * @param nums
     */
    public static void bubbleSort(int[] nums){
        int n = nums.length;
        for (int i = 0; i < n; i++) { //表示n次排序
            for (int j = 0; j < n-i-1; j++) {
                if (nums[j] > nums[j+1]) {//前面个数大于后面个就互换把大的换到后面去
                    //互换
                    int temp = nums[j];
                    nums[j] = nums[j+1];
                    nums[j+1] = temp;
                }
            }
        }
    }

    public static void main(String[] args) {
        int[] nums = {3,2,1,4,5,6};
        bubbleSort(nums);
        System.out.println(Arrays.toString(nums));
    }

}
